using System;

namespace WillsTuringMachines.Simulators
{
	public class TuringMachineSimulatorData: ITuringMachineSimulatorData
	{


		private object currentState;
		private object currentSymbol;
		private object nextState;
		private object nextSymbol;
		private bool overwriteCurrentTapeSymbol;
		private TapeDirection nextDirection;

		public TuringMachineSimulatorData ()
		{
			currentState = null;
			currentSymbol = null;
			nextState = null;
			nextSymbol = null;
			overwriteCurrentTapeSymbol = false;
			nextDirection = TapeDirection.NONE;
		}

		public TuringMachineSimulatorData(object _curState, object _curSymbol)
		{
			currentState = _curState;
			currentSymbol = _curSymbol;
			nextState = null;
			nextSymbol = null;
			overwriteCurrentTapeSymbol = false;
			nextDirection = TapeDirection.NONE;
		}

		public object CurrentState
		{
			get { return currentState; }
			set { currentState = value; }
		}

		public object CurrentSymbol
		{
			get { return currentSymbol; }
			set { currentSymbol = value; }
		}

		public object NextState
		{
			get { return nextState; }
			set { nextState = value; }
		}

		public object NextSymbol
		{
			get { return nextSymbol; }
			set { nextSymbol = value; }
		}

		public bool OverwriteCurrentTapeSymbol
		{
			get { return overwriteCurrentTapeSymbol; }
			set { overwriteCurrentTapeSymbol = value; }
		}

		public TapeDirection NextDirection
		{
			get { return nextDirection; }
			set { nextDirection = value; }
		}
	}
}

